from Globals import *
import re,praw

class lereddit():
	'''
	Deze plugin zal de subreddit /r/music opvragen en de "HOT 25" lijst parsen. Hij zal zoeken naar elk youtube-link en zal deze in een playlist zetten en dan afspelen. Je kan deze plugin oproepen met het commando Redditlist via de raw-server

	'''
	r = None
	callback = None
	def __init__(self,callback):
		print "[REDDIT] Call me with Redditlist"
		self.callback = callback
		self.r = praw.Reddit(user_agent='MediaController Reddit Plugin 1.0.0.0.0.2')

	def gatherMusic(self):
		'''
		Deze functie vraagt de subreddit op en zal een lijst met de youtube-url's teruggeven
		'''
		submissions = self.r.get_subreddit('music').get_hot(limit=25)
		playlist = ([])
		for xx in submissions:
			if re.match('^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$',xx.url):
				playlist.append(xx.url)
		return playlist


	def playAll(self,playlist):
		'''
		Deze functie zal de lijst in de playlist toevoegen
		'''
		for play in playlist:
			match = re.match('^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]*).*$',play,re.IGNORECASE)
			if match:
				self.callback.playSongfromYT(match.group(2))



	def doAll(self):	
		'''
		playAll & gatherMusic oproepen
		'''
		self.playAll(self.gatherMusic())

def run():
	global hook
	global lesubreddit
	lesubreddit = lereddit(hook.main)
	hook.registerHook('unhandledCommand_before', parseCommand)


def parseCommand(args):
	if re.match('^Redditlist(\r|\n){0,}$',args['data'],re.IGNORECASE):
		#main.doAll()
		lesubreddit.doAll()

